基于一种改进的Wide&Deep 文本分类在用户身份识别上的实践
The following article is from 58技术 Author 杨森
导读
在互联网平台中,通常包含C端和B端两种客户。为了更好地服务C端用户,识别出用户身份十分重要。本文详细介绍了在用户身份识别过程中如何解决冷启动时少样本的问题,并比较了关键词匹配、XGBoost、TextCNN、改进的Wide & Deep在用户身分识别上的表现效果,其中改进的Wide & Deep模型相比使用关键词匹配在F1值上绝对提升了26.37%。
背景
在互联网平台存在许多黑产和恶意骚扰的用户,通过识别用户身份可以有效阻止骚扰率,提升用户体验。本文的工作主要通过自然语言处理的技术识别C端的真实身份。 为了识别C端用户身份,本文尝试了关键词匹配、XGBoost、 TextCNN和改进的Wide &Deep模型。在用户身份识别的过程中包括多个环节。如图1所示,首先利用语音识别技术,将语音内容转换成文本;最后利用自然语言处理技术对文本进行分析处理,识别用户的身份 。图 1 用户身份识别的整体流程
在本文中,主要介绍的是用户身份识别整体流程中的自然语言处理环节。首先,介绍了在自然语言处理环节中如何破解冷启动时少样本的问题;然后详细阐述了不同算法模型的特点与实现过程;最后,对比了不同算法模型在相同测试集上的评测效果。
冷启动和样本收集
在用户身份识别的任务中,经常会遇到两种冷启动问题:一是标注数量过少;二是样本不平衡情况下的数据标注问题。在标注数量过少的情况下,往往无法直接使用机器学习模型,因为直接使用机器学习模型会产生过拟合问题,使模型的性能达不到预期。而样本不平衡问题是指有用的类别样本所占比例太小,会极大地降低标注的效率。比如正样本的数量仅占1%,标注100条数据,仅有1条正样本,而在真实的业务场景中往往只关注正样本。
面对这样的业务场景,本文总结开发了冷启动流程和方法,破解冷启动困局,减少对标注的需求,快速进入模型的迭代优化开发。本文主要分3个阶段解决冷启动问题, 如图2所示。
图 2 冷启动和样本收集流程
第一阶段是定义标签。在这一阶段需要结合业务场景,确定落地的目标和标签的定义。定义标签的原则是先易后难,不同标签之间有明显的差异,方便人工标注和算法迭代。
第二阶段是算法识别。利用已有的标注样本进行数据分析,得到数据的分布特征;然后根据数据分布的特征使用算法模型,预测得到正样本。
第三阶段是持续迭代。对算法识别的结果进行人工标注,总结识别错误情况的特点。并将标注的数据和总结的特点反馈给算法模型,不断扩大标注数据集和提升算法模型的泛化能力。
然后重复第二、三阶段,形成一个良性循环,扩充样本数据集和提升模型的性能。
模型迭代
为了识别用户的身份,本文依次尝试了关键词匹配、XGBoost、TextCNN、模型融合、改进的Wide&Deep等模型。接下将分别介绍各个模型的特点和实现过程。
1.关键词匹配
在项目早期,缺少标注数据。为了解决冷启动问题,可以使用关键词匹配模型识别用户身份:利用TF-IDF算法和人工挖掘关键词,然后再利用关键词获得文本标签。人工挖掘关键词是指通过人工分析语料数据,总结得到关键词。而TF-IDF算法则是通过计算TF-IDF值,筛选得到关键词。TF-IDF值计算方法如下所示:
TF表示词频,IDF表示逆文档频率。当一个词的TF-IDF值越高,越有可能是关键词。
关键词匹配模型有许多优点:具有即用性和可解释性等特点。关键词匹配简单、灵活,在很小的数据上进行规则表述与训练,能实现“即插即用”;同时关键词匹配具有良好的解释性,能很好解释匹配到的结果。所以在冷启动时期,采用了关键词匹配模型进行算法迭代。
虽然关键词匹配在项目早期取得了较好的效果,但是随着时间的积累和数据量的增加,关键词匹配的效果逐步下降。为了优先提高关键词匹配的准确率,对关键词模型进行了迭代优化。
这里主要采用两种优化策略:一是组合关键词;二是设置关键词阈值。
组合关键词
关键词可以分为强关键词和弱关键词。对于强关键词,识别准确率很高,可以直接使用;而弱关键识别的准确率较低,一般不直接使用。通过将弱关键词进行组合,具有很高的准确率,进而形成强规则。
设置关键词阈值
统计不同关键词命中的次数,对命中次数设置阈值。
迭代优化后的关键词匹配模型取得了不错的效果,准确率为98.75%,召回率为37.44%,F1 Score值为54.3%。然而,早期的数据量很少,不足全量数据1%;随着数据量的逐步增加,关键词匹配模型的识别效果逐步下降。为此,本文迭代开发多种模型,增加模型的多样性,进而提高识别效果的稳定性。
2.XGBoost模型
随着时间的积累,数据量逐步增加,关键词匹配模型识别效果逐渐变差,存在着识别效果不稳定的问题。因而,为了增强识别结果的稳定性并提高召回率,采用Xgboost模型作为第二版模型:利用对话文本的词频特征,训练XGBoost模型。如图3所示,将对话文本首先按顺序进行拼接,然后将计算文本的词频特征,输入给XGBoost进行分类。
XGBoost模型识别的准确率为96.77%,召回率为42.65%,F1 Score值为59.21%。与关键词匹配模型相比,XGBoost模型的F1 Score值提升4.91%,且XGBoost模型识别的效果具有更好的稳定性。关键词匹配模型仅使用少量的关键词,容易受到文本和ASR识别错误的影响;而XGBoost模型将文本分词后,提取的词典特征多达30000多个,特征数量远远大于关键词匹配模型所用的关键词数量,因而XGBoost可以捕捉到更多的特征信息,所以XGBoost模型具有更好的稳定性。
图 3 XGBoost模型
3.TextCNN模型
虽然XGBoost具有较好的稳定性,但是对于方言语音识别的文本,XGBoost模型仍然会受到较大影响。关键词匹配和XGBoost模型实质上用到的都是“词级”特征,使用“词级”特征表征语义具有一定局限性,无法完整的解析语义信息;另外,关键词匹配和XGBoost模型都依赖于文本的正确性,而语音识别转文本会产生许多错误的文本,对上述两个模型有较大的影响。
随着数据量的增加,训练标注样本数目的不断增加,在大量数据集下使用深度学习模型比关键词匹配和XGBoost模型更具有优势。这种优势主要体现在特征抽取方面,比如,TextCNN可以完整的提取文本语义,而且TextCNN也可以根据对话文本提取出句子之间的结构信息。因而结合语义特征和句子结构特征,TextCNN具有更好的效果和更好的稳定性。TextCNN模型识别的准确率为99.02%,召回率为48.34%, F1 Score为64.97%。
如图4所示,这里展示了了第三版TextCNN模型:首先将所有的发言文本拼接成长文本输入给TextCNN,由TextCNN进行提取特征,最后输出识别的结果。
图 4 TextCNN模型结构
4.融合模型(关键词匹配+XGBoost模型+TextCNN)
在关键词匹配、XGBoost和TextCNN这3个模型中,TextCNN的效果和稳定性最好。然而,在保证准确率的前提下,为了提高召回率,这里迭代第4版模型:将关键词匹配、XGBoost和TextCNN模型的结果融合在一起,通过增加模型的多样性,既保证高的准确率,又提高召回率。
图5展示了关键词匹配、XGBoost和TextCNN融合模型的原理:首先,将对话文本经过预处理后,分别输入给关键词匹配、XGBoost和TextCNN模型;然后,将XGBoost和TextCNN两个模型的打分取平均值;最后,设置2个阈值条件:(1)当XGBoost和TextCNN的平均值大于0.75,则认为是正样本;(2)当XGBoost和TextCNN的平均值大于0.6且触发关键词匹配条件,则认为正样本。
图 5 关键词匹配、XGBoost和TextCNN融合模型
融合模型包括了关键词匹配、XGBoost和TextCNN三个模型,其识别准确率为100%,召回率为54.03%,F1 Score为70.15%。在融合模型中,XGBoost模型擅长捕捉文本中的词频信息,但是无法结合上下文和捕捉语义信息;TextCNN模型可以解析文本中的语义信息和句子结构信息。通过融合XGBoost和TextCNN模型,可以利用两个模型的优点:既可以挖掘到文本词频信息,又可以提取文本的语义和句子结构信息。关键词匹配模型会产生错误的识别结果,通过XGBoost和TextCNN的阈值作为约束,可以减少关键词匹配的识别错误,进而提高识别的准确率。
5.改进的Wide&Deep模型
在融合模型中,模型是手动地将词频特征、语义特征和句子结构信息融合在一起,然而手动融合存在无法准确挖掘特征信息的问题;因而本文决定使用Wide&Deep模型联合学习多种特征。图6显示的是原生的Wide&Deep模型,其deep部分(DNN)无法有效的挖掘语义信息,导致识别效果较差,原生的Wide&Deep模型识别的准确率为98%,召回率为46.44 %, F1 Score为63.02%。为此,本文提出了一种改进的Wide&Deep模型,如图7所示,本文将Wide&Deep模型的Deep部分替换为TextCNN模型,而Wide部分仍然为LR模型。对于改进的Wide&Deep模型,Wide部分的输入特征为词频特征,Deep部分的输入特征为对话文本。通过联合学习训练改进的Wide&Deep模型,利用Wide部分挖掘词频信息,而利用Deep(TextCNN)部分挖掘文本语义和句子结构信息。
由于改进的Wide&Deep模型综合使用了多种特征,因而改进的Wide&Deep是5个模型中的最优模型。其识别用户身份的准确率为98.63%,召回率为68.25%,F1 Score值为80.67%。
图 6 原生的Wide&Deep模型结构
图 7 改进后的Wide&Deep模型结构
结果
经过一系列的迭代优化,共产生了5个模型。本文对这5个模型在相同测试集进行评测,对比不同模型的表现效果。从表1中可以看出,这5个模型都具有高的准确率,准确率都在96%以上,满足业务对准确率的要求;另外,对比这5个模型的F1 Score值,发现F1 Score从大到小依次是:Wide&Deep(改进)>融合模型>TextCNN模型>XGBoost模型>关键词匹配。F1 Score值最大的是Wide&Deep,达到80.67%;而F1 Score值最小的是关键词匹配模型,仅为54.3%。F1 Score的对比结果说明,模型的效果与上文分析模型的优缺点相一致。
总结及展望
本文主要介绍了用户身份识别任务冷启动和样本收集的过程,介绍了用户身份识别算法模型的迭代过程,详细阐述关键词匹配、XGBoost、TextCNN、Wide&Deep等模型特点和实现方法。在项目早期,适合使用关键词匹配快速启动项目;随着数据的增多,TextCNN和Wide&Deep模型更具有优势,且效果更好。
作者简介杨森,58同城AI Lab算法开发工程师,主要负责58同城灵犀语音分析的算法开发工作。
AI Lab 招聘信息欢迎关注开源项目 qa_matchqa_match是58同城开源的一款基于深度学习的问答匹配工具,支持一层和两层结构知识库问答。qa_match通过意图匹配模型支持一层结构知识库问答,通过融合领域分类模型和意图匹配模型的结果支持两层结构知识库问答。qa_match同时支持无监督预训练功能,通过轻量级预训练语言模型(SPTM,Simple Pre-trained Model)可以提升基于知识库问答等下游任务的效果。github地址:https://github.com/wuba/qa_match
文章介绍:
欢迎关注部门微信公众号:58AILab
欢迎在欣秀(https://app.ic3i.com)平台上加入"58同城AILab技术沙龙"圈子,一起交流技术,可以扫描以下二维码加入该圈子。